@echo off
chcp 65001 >nul
echo === 低代码生成器演示开始 ===
echo.

echo 1. 检查Java和Maven环境...
java -version
if %errorlevel% neq 0 (
    echo 错误: 未找到Java环境
    pause
    exit /b 1
)

mvn -version
if %errorlevel% neq 0 (
    echo 错误: 未找到Maven环境
    pause
    exit /b 1
)

echo.
echo 2. 编译项目...
mvn clean compile
if %errorlevel% neq 0 (
    echo 错误: 项目编译失败
    pause
    exit /b 1
)

echo.
echo 3. 启动Spring Boot应用...
echo 请等待应用启动完成（约30秒）...
start /b mvn spring-boot:run

echo 等待应用启动...
timeout /t 30 /nobreak >nul

echo.
echo 4. 检查应用状态...
curl -f http://localhost:8080/actuator/health
if %errorlevel% neq 0 (
    echo 警告: 应用可能还未完全启动，请稍等片刻
    timeout /t 10 /nobreak >nul
)

echo.
echo 5. 查看现有数据库表...
curl -X GET http://localhost:8080/api/database/tables

echo.
echo.
echo 6. 根据Schema创建新表...
curl -X POST http://localhost:8080/api/database/tables -H "Content-Type: application/json" -d @product-table.schema.json

echo.
echo.
echo 7. 生成MyBatis Plus基础代码...
curl -X POST http://localhost:8080/api/generator/mybatis-plus -H "Content-Type: application/json" -d @mybatis-plus-config.json

echo.
echo.
echo 8. 生成带QO/VO的MyBatis Plus代码...
curl -X POST http://localhost:8080/api/generator/mybatis-plus -H "Content-Type: application/json" -d @mybatis-plus-qovo-config.json

echo.
echo.
echo 9. 生成独立代码...
curl -X POST http://localhost:8080/api/generator/independent -H "Content-Type: application/json" -d @independent-config.json

echo.
echo.
echo 7. 测试产品管理API...
echo 创建产品...
curl -X POST http://localhost:8080/api/products -H "Content-Type: application/json" -d "{\"name\":\"演示产品\",\"code\":\"DEMO001\",\"description\":\"这是一个演示产品\",\"price\":99.99,\"category\":\"演示分类\",\"stock\":100,\"status\":\"ACTIVE\"}"

echo.
echo.
echo 查询所有产品...
curl -X GET http://localhost:8080/api/products

echo.
echo.
echo 10. 运行单元测试...
echo 运行单元测试验证生成代码功能...
echo.

REM 运行所有单元测试
echo 正在运行单元测试...
mvn test -Dtest=ProductServiceTest

if %ERRORLEVEL% EQU 0 (
    echo ✅ 单元测试通过！
) else (
    echo ❌ 单元测试失败，请检查代码
)

echo.
echo 测试覆盖的功能：
echo - ✅ 创建产品测试
echo - ✅ 查询产品测试
echo - ✅ 更新产品测试
echo - ✅ 删除产品测试
echo - ✅ 分页查询测试
echo - ✅ 数据验证测试
echo.

echo.
echo 11. 打开API文档页面...
echo 正在打开Swagger文档页面...
start http://localhost:8080/doc.html

echo.
echo 12. MySQL数据库连接信息...
echo 数据库连接信息:
echo JDBC URL: jdbc:mysql://rm-bp1o5hmmwpdx0t5i92o.mysql.rds.aliyuncs.com:3306/lowcode
echo 用户名: barry
echo 密码: barry2025@
echo 注意: 使用真实MySQL数据库，数据持久化存储

echo.
echo === 演示完成 ===
echo.
echo 演示要点:
echo - API文档: http://localhost:8080/doc.html
echo - MySQL数据库: rm-bp1o5hmmwpdx0t5i92o.mysql.rds.aliyuncs.com:3306/lowcode
echo - 生成的代码位于 ./generated 目录
echo - 配置文件: product-table.schema.json, mybatis-plus-*.json, independent-config.json
echo.
echo 按任意键停止应用并退出...
pause >nul

echo 正在停止应用...
taskkill /f /im java.exe 2>nul
echo 应用已停止